# 作者：石吴震
# 2025年01月01日12时39分45秒
# 474160957@qq.com
import os

def seek_start():
    """
    相对于开头（文件起始位置）进行偏移
    :return:
    """
    file=open('file1',mode='r+',encoding='utf-8')
    file.seek(5,os.SEEK_SET)
    text=file.read(5) # 读取5个字符,一个字母占一个字符，一个汉字占3个字符
    print(text)
    file.close()

def seek_end():
    """
    相对于结尾（文件末尾位置）进行偏移
    :return:
    """
    file=open('file1',mode='r+',encoding='utf-8')
    file.seek(0,os.SEEK_END) #前面只能填0
    text=file.read(5) # 读取5个字符,一个字母占一个字符，一个汉字占3个字符
    print(text)
    file.close()

def seek_current():
    """
    相对于当前位置（文件当前光标位置）进行偏移
    :return:
    """
    file=open('file1',mode='r+',encoding='utf-8')
    file.seek(0,os.SEEK_CUR) #前面也是只能填0
    text=file.read(5) # 读取5个字符,一个字母占一个字符，一个汉字占3个字符
    print(text)
    file.close()

def seek_b_cur():
    """
    在B模式下，读取到的是字节流，读取图片，音频，视频等二进制文件时使用
    :return:
    """
    file=open('file1',mode='rb+') #b模式下，不指定编码
    file.seek(5,os.SEEK_CUR)  #此时前面可以填其他的
    file.seek(-2,os.SEEK_CUR)
    file.seek(-3,os.SEEK_END)
    b=file.read()
    print(b)
    file.close()

def copy_file():
    """
    复制文件
    :return:
    """
    file1=open('jieping.png',mode='rb+')
    file2=open('jieping_copy.png',mode='wb')
    b=file1.read()
    file2.write(b)
    file1.close()
    file2.close()

def modify_movie():
    """
    修改视频文件
    :return:
    """
    file1=open('jieping.png',mode='rb+')
    file1.seek(10,os.SEEK_SET) # 移动到10字节位置
    b=file1.read(1) # 读取10字节
    inverted_b=bytes([~b[0] & 0xff])
    file1.seek(10,os.SEEK_SET)
    file1.write(inverted_b) # 写入反转后的字节
    file1.close()

if __name__ == '__main__':
    # seek_start()
    # seek_end()
    # seek_current()
    # seek_b_cur()
    # copy_file()
    modify_movie()